package com.education.platform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.education.platform.dto.notification.NotificationCreateDTO;
import com.education.platform.entity.Notification;

import java.util.List;
import java.util.Map;

/**
 * 通知服务接口
 *
 * @author education-platform
 * @since 2025-10-27
 */
public interface NotificationService {

    /**
     * 创建通知
     */
    Long createNotification(NotificationCreateDTO dto);

    /**
     * 更新通知
     */
    void updateNotification(Long id, NotificationCreateDTO dto);

    /**
     * 删除通知
     */
    void deleteNotification(Long id);

    /**
     * 根据ID获取通知
     */
    Notification getNotificationById(Long id);

    /**
     * 分页查询通知列表
     */
    IPage<Notification> getNotificationPage(Page<Notification> page, String type, String status, String keyword);

    /**
     * 发送通知
     */
    void sendNotification(Long id);

    /**
     * 批量发送通知
     */
    void batchSendNotifications(List<Long> ids);

    /**
     * 获取通知统计
     */
    Map<String, Object> getNotificationStats();

    /**
     * 获取用户未读通知
     */
    List<Notification> getUserUnreadNotifications(Long userId);

    /**
     * 标记通知为已读
     */
    void markAsRead(Long notificationId, Long userId);
}

